package top.lidee.repository.model.twice.vo.applet;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.URL;
import org.springframework.format.annotation.DateTimeFormat;
import top.lidee.repository.model.twice.pojo.management.TpbAliBankAccountEntity;
import top.lidee.repository.model.twice.pojo.management.TpbWechatBankAccountEntity;
import top.lidee.repository.model.twice.vo.management.WxTySuperAdminVo;
import top.lidee.repository.validator.constraints.IdCard;
import top.lidee.repository.validator.constraints.Phone;
import top.lidee.repository.validator.groups.Update;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author 张一恒
 * @version 1.0
 * @description:
 * @date 2024/9/26 18:26
 */
@Data
public class AddStoreLicenseInformationVo {

    @ApiModelProperty("商户id")
    @NotNull(message = "商户id不能为空")
    private Integer merchantId;


    //服务商或商户提交4大块信息，包括主体资料、法人资料、经营资料、结算银行账户。

    //<editor-fold desc="主题资料 营业执照">
    @ApiModelProperty("主体类型：0个体户，1企业，2小微/个人")
    @NotBlank(message = "主体类型不能为空")
    private String principalType;

    @ApiModelProperty("营业执照")
    private String license;

    @ApiModelProperty("统一社会信用代码")
    private String creditCode;

    @ApiModelProperty("营业执照店铺名称")
    private String licenseName;

    @ApiModelProperty("联系人姓名（营业执照法人姓名、身份证绑定名称）")
    @NotBlank(message = "联系人姓名（营业执照法人姓名、身份证绑定姓名）不能为空")
    private String contact;

    @ApiModelProperty("地址（经营详细地址/营业执照地址）")
    @NotBlank(message = "地址（经营详细地址/营业执照地址）不能为空")
    private String address;

    @ApiModelProperty("营业执照有效期（开始时间）")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date licenseStartTime;

    @ApiModelProperty("营业执照有效期（结束时间）")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date licenseEndTime;
    //</editor-fold>

    //<editor-fold desc="法人身份证件信息">
    @ApiModelProperty("身份证正面url（国徽面）")
//    @URL(message = "身份证正面url（国徽面）不正确",groups = Update.class)
    private String cardUpUrl;

    @ApiModelProperty("身份证反面url（人像面）")
//    @URL(message = "身份证正面url（人像面）不正确",groups = Update.class)
    private String cardVersaUrl;

    @ApiModelProperty("法人身份证号")
//    @IdCard(groups = Update.class)
    private String idCard;

    @ApiModelProperty("身份证有效期（开始时间）")
//    @NotNull(message = "身份证有效期（开始时间）不能为空",groups = Update.class)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date cardStartTime;

    @ApiModelProperty("身份证有效期（结束时间）")
//    @NotNull(message = "身身份证有效期（结束时间）不能为空",groups = Update.class)
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date cardEndTime;

    @ApiModelProperty("身份证居住地址")
//    @NotNull(message = "身份证居住地址不能为空",groups = Update.class)
    private String idCardAddress;
    //</editor-fold>


    //<editor-fold desc="经营资料">
    @ApiModelProperty("联系电话")
    @Phone
    private String phone;

    @ApiModelProperty("主营分类ID(2级)")
    @NotNull(message = "主营分类不能为空")
    private Integer cateId;

    @ApiModelProperty("特殊资质照片url集合")
    private List<SpecialQualificationVo> specialQualificationVos;

    @ApiModelProperty("店铺名称/店铺简称/线下场所名称")
    @NotNull(message = "店铺名称/店铺简称/线下场所名称不能为空")
    private String name;

    @ApiModelProperty("省份")
    private String province;

    @ApiModelProperty("城市")
    @NotBlank(message = "城市不能为空")
    private String city;

    @ApiModelProperty("区/县")
    private String county;

    @ApiModelProperty("门头照片url")
    @URL(message = "门头照片url不正确")
    private String doorPhotographUrl;

    @ApiModelProperty("内景照片url")
    @URL(message = "内景照片url不正确")
    private String interiorUrl;
    //</editor-fold>


    //<editor-fold desc="结算银行账户">

    /**
     * 支付宝
     */
    @ApiModelProperty("结算银行账户--》支付宝")
    private TpbAliBankAccountEntity tpbAliBankAccount;


    /**
     * 微信
     */
    @ApiModelProperty("结算银行账户--》微信")
    private TpbWechatBankAccountEntity tpbWechatBankAccount;
    @ApiModelProperty("微信 特约商户进件超级管理员")
    private WxTySuperAdminVo wxTySuperAdminVo;
    //</editor-fold>

    @ApiModelProperty("备注信息")
    private String description;

}
